package com.unidt.www.module.bpm.dal.mysql.task;

import com.unidt.www.module.bpm.controller.admin.task.vo.task.MyTaskVo;
import com.unidt.www.module.bpm.vo.HourDurationVo;
import com.unidt.www.module.bpm.vo.ProcessCategoryVo;
import com.unidt.www.module.bpm.vo.TaskStatisticsVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

@Mapper
public interface BpmStatisticsMapper {

    /**
     * 获取 时间段内 平均处理任务时间
     *
     * @param assignee
     * @param startTime
     * @param endTime
     * @return
     */
    List<HourDurationVo> getHourDurationAvg(@Param(value = "assignee") String assignee, @Param(value = "startTime") Date startTime, @Param(value = "endTime") Date endTime);

    /**
     * 功能描述: 统计流程参与个数
     * @author sk
     * @date 2022/12/1
     * @param assignee 参与者
     * @param startTime
     * @param endTime
     * @return com.unidt.www.module.bpm.vo.ProcessModelVo
     */
    List<ProcessCategoryVo> getProcessModelDue(@Param(value = "assignee") String assignee, @Param(value = "startTime") Date startTime, @Param(value = "endTime") Date endTime);

    /**
     * 功能描述:我的代办数量
     * @author sk
     * @date 2023/1/31
     * @param loginUserId
     * @param startTime
     * @param endTime
     * @return java.lang.Integer
     */

    MyTaskVo getUnDoCount(@Param(value = "assignee")  Long loginUserId, @Param(value = "startTime") Date startTime, @Param(value = "endTime") Date endTime);

    /**
     * 功能描述:
     * @author sk
     * @date 2023/1/31
     * @param deptId
     * @param startTime
     * @param endTime
     * @return java.util.List<com.unidt.www.module.bpm.vo.HourDurationVo>
     */
    List<HourDurationVo> getDeptHourDurationAvg(@Param(value = "deptId") Long deptId,  @Param(value = "startTime") Date startTime, @Param(value = "endTime") Date endTime);

    /**
     * 部门任务总数
     * @param deptId
     * @param startTime
     * @param endTime
     * @return
     */
    List<TaskStatisticsVo> getDeptTaskTotalLine(@Param(value = "deptId") Long deptId, @Param(value = "startTime") Date startTime, @Param(value = "endTime") Date endTime);

    /**
     * 功能描述: 部门办结数量
     * @author sk
     * @date 2023/2/1
     * @param deptId
     * @param startTime
     * @param startTime
     * @return java.util.List<com.unidt.www.module.bpm.vo.TaskStatisticsVo>
     */
    List<TaskStatisticsVo> getDeptTaskEndLine(@Param(value = "deptId") Long deptId, @Param(value = "startTime") Date startTime, @Param(value = "endTime") Date endTime);

    /**
     * 功能描述:
     * @author sk
     * @date 2023/2/1
     * @param assignee
     * @param startTime
     * @param startTime
     * @return java.util.List<com.unidt.www.module.bpm.vo.TaskStatisticsVo>
     */
    List<TaskStatisticsVo> getMyTaskLine( @Param(value = "assignee") Long assignee, @Param(value = "startTime") Date startTime, @Param(value = "endTime") Date endTime);

    /**
     * 功能描述:
     * @author sk
     * @date 2023/2/10
     * @param assignee
 * @param startTime
 * @param endTime
     * @return java.lang.Integer
     */
    
    Integer getOutTimeCount(@Param(value = "assignee") Long assignee, @Param(value = "startTime") Date startTime, @Param(value = "endTime") Date endTime);
}
